/**
 * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
 *
 * 
 * @param grid int整型二维数组 
 * @return int整型
 */
 function maxValue( grid ) {
  // write code here
  // 设置一个二维数组dp[i][j] 表示走到i,j位的时候 钱的最大值
  // i = 数组的行数 j = 数组的列数
  var m = grid.length
  var n = grid[0].length
  // 生成二维数组dp
  var dp = new Array() // 先生命一个二维数组
  for(let i = 0 ; i < m ; i++){ // 一维有这么多的数组
    dp[i] = new Array(n).fill(0) // 生成二维 并且填充0 
  }
  for(let i = 0 ; i < m ; i++){ // 从每一行开始遍历
    for(let j = 0 ; j < n ; j++){ // 遍历每一个元素
      if(i === 0 && j === 0){
        dp[i][j] = grid[i][j]
      }else if(i === 0){
        dp[i][j] = dp[i][j-1] + grid[i][j]
      }else if(j === 0){
        dp[i][j] = dp[i-1][j] + grid[i][j]
      }else {
        dp[i][j] = dp[i-1][j] > dp[i][j-1] ? (dp[i-1][j] + grid[i][j]) : dp[i][j-1] + grid[i][j]
      }
    }
  }
  return dp[m-1][n-1]
}
module.exports = {
  maxValue : maxValue
};